Restful路径下编写controller层及其增删改查 | 您所在的位置:网站首页 › restful url没有id › Restful路径下编写controller层及其增删改查 |
前置:需要先创建好项目,并且使用mabtis根据数据表生成好代码 mybatis plus自动生成代码(代码生成器)_wa1ttinG的博客-CSDN博客 一、controller层定义controller层就是和用户打交道,直接与前端进行交互。可调用service层,要先的到对象一般使用自动装配,因此controller层总是使用@Autowired得到一个service对象。 二、controller类简单示例定义了一个对与教师的teacher的controller业务 @RestController @RequestMapping("/eduservice/teacher") public class EduTeacherController { @Autowired private EduTeacherService teacherService; @GetMapping("findAll") public List findAllTeacher() { List list = teacherService.list(null); return list; } }teacherService是由mabtis自动创建的Service层 将返回值作为json对象返回:@RestController @ResponseBody其源码 package org.springframework.web.bind.annotation; import ... @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller @ResponseBody public @interface RestController { @AliasFor( annotation = Controller.class ) String value() default ""; }就是可以看到其有两个注解@Controller和@ResponseBody(注解具有继承性?),RestController是这两个的结合体,也就是@Controller:创建bean对象,@ResponseBody:注解表示该方法的返回的结果(return的结果)直接转换为json数据写入 HTTP 响应正文(响应体)中,返回值就是响应结果!! 同理@RequestBody就是将请求体json转换为java数据结构(一般是类,也可以是基本数据结构)。这个类需要提前定义好,且属性名要和json对照上。 二者都是请求体json和java数据结构的互换 返回的JSON时间格式的时区也需要修改,且格式也不是我们想要的。 "2019-10-30T06:18:46.000+0000" 进行修改,在application.properties中设置 #返回json的全局时间格式 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 @RequestMapping前端访问什么url 该controller进行工作,多用于Controller类上,比如 @RestController @RequestMapping("/eduservice/teacher") public class EduTeacherController {那么如果前端发送请求路径是/eduservice/teacher时,由EduTeacherController接手请求,再根据细节路径和请求方式匹配Controller中函数,需要注意路径前必须要加/。 RequestMapping一般命名为模块名+mysql表名(实体名),这样可以方便的知道是对哪个模块下的哪个表的操作。 三、增删改查操作实现 前置知识1:Restful路径假设要对教师teacher进行操作 方式 url 意义 get /teacher 获取全部员工信息 get /teacher/{id} 获取该id的员工信息 post /teacher 添加(一条)员工信息 put /teacher 更新员工信息 delete /teacher/{id} 删除员工信息 助记: 1、获取全部教师信息不需要添加id、更新和添加教师信息使用post方式传给后端一个类,也不需要额外指明id。 2、此外添加员工和更新员工由于需要在请求体中添加json信息,get,delete请求不能携带请求体,而put和delete能够携带请求体,所以添加员工和更新员工肯定是post或get请求。 HTTP请求的GET,DELETE请求能有body吗?_delete请求可以传body吗_qq_34412985的博客-CSDN博客 比如我要更新员工信息,因为要在请求体中携带员工的具体信息,因此使用请求为post或put,又因为url不需要id值(id值在请求体中),因此url没有id。 前置知识2:四种请求方式匹配@GetMapping、@PostMapping、@DeleteMapping、@PutMapping 四种mapping通常作用于controller层中的函数上 这个路径可以不加/,随意,与所属controller的mapping拼接形成最终的访问路径。 1、查询所有数据 @GetMapping("findAll") public List findAllTeacher() { List list = teacherService.list(null); return list; }比如@GetMapping("findAll"),就是前端发送的Get请求、且url是"/eduservice/teacher/findAll",此时该 函数就会生效,处理该请求。 2、删除一个数据再比如删除操作,因为RequestMapping已经设定好了模块与表名的url:"/eduservice/teacher" 此时我们只需要在url上一个员工id就好了,并且使用的是delete方法,这样就可以通过url:"/eduservice/teacher/{某个id}"来调用该删除功能。 @DeleteMapping("{id}") public boolean removeTeacher(@PathVariable String id){ boolean flag = teacherService.removeById(id); return flag; } |
CopyRight 2018-2019 实验室设备网 版权所有 |